// BIMFACE 模型文件管理-Projects相关接口
// https://bimface.com/docs/file-management/v1/api-reference/createProjectUsingPOST.html

import  bimfaceHttp from '@/api/Bimface';
import {
  ProjectModel,
  ProjectsArrayModel,
  RootFolderModel,
  CreateProjectData,
} from './model/projectModel';

enum Api {
  Hubs = '/bdfs/domain/v1/hubs',
  Folders = '/bdfs/data/v1/projects',
  Projects = '/bdfs/domain/v1/hubs',
}

/**
 * @abstract: 创建项目
 * @description: 用Access Token创建项目，对文件分项目进行管理，创建项目之前需要获取应用所属的hubId。
 */
export function createProjects(hubId: string, data: CreateProjectData) {
  return bimfaceHttp.post<ProjectModel>({ url: Api.Hubs + `/${hubId}/projects`, data: data });
}

/**
 * @abstract: 获取项目列表
 * @description: 根据hubId查询所属应用下的项目，默认开启useFuzzySearch，搜索名字中包含关键字的项目。
 */
export function getProjectsList(hubId: string) {
  return bimfaceHttp.get<ProjectsArrayModel>({ url: Api.Hubs + `/${hubId}/projects` });
}

/**
 * @abstract: 获取项目信息
 * @description: 根据HubId和项目ID获取指定项目的信息，包括项目名称、项目描述等。
 */
export function getProjectInfo(hubId: string, projectId: string) {
  return bimfaceHttp.get<ProjectModel>({ url: Api.Projects + `/${hubId}/projects/${projectId}` });
}

/**
 * @abstract: 获取项目根文件夹信息
 * @description: 获取项目下的根文件夹信息，包括根文件夹路径。每个项目拥有对应且唯一的根文件夹，项目下所有文件夹/文件都存放于该根文件夹下。根文件夹和项目绑定，随项目自动创建、更新、删除，不支持针对根文件夹的移动、复制、删除等操作。
 */
export function getRootFolderInfo(hubId: string, projectId: string) {
  return bimfaceHttp.get<RootFolderModel>({
    url: Api.Hubs + `/${hubId}/projects/${projectId}/root-folder`,
  });
}

/**
 * @abstract: 删除项目
 * @description: 根据项目ID删除项目。
 */
export function deleteProject(hubId: string, projectId: string) {
  return bimfaceHttp.delete<ProjectModel>({
    url: Api.Projects + `/${hubId}/projects/${projectId}`,
  });
}

/**
 * @abstract: 更新项目
 * @description: 通过接口，可修改指定项目的信息，包含项目名称、项目描述、项目缩略图。
 */
export function updateProject(hubId: string, projectId: string, data: CreateProjectData) {
  return bimfaceHttp.patch<ProjectModel>({
    url: Api.Projects + `/${hubId}/projects/${projectId}`,
    data: data,
  });
}
